//数据更新后  收到通知  调用update更新

class Watcher {
	constructor(vm, key, cb) {
		//vm Vue实例
		this.vm = vm
		//key 是data中的属性
		this.key = key
		//cb 回调函数 更新视图的具体方法
		this.cb = cb
		//把观察者存放在Dep.target
		Dep.target = this
		//旧数据 更新视图时需要比较
		// 还有一点就是 vm[key] 这个时候就触发了 get 方法
		// 之前在 get 把 观察者 通过dep.addSub(Dep.target) 添加到了 dep.subs中
		this.oldValue = vm[key]
		//Dep.target不存在了
		Dep.target = null
	}
	//更新视图
	update() {
		let newValue = this.vm[this.key]
		if (newValue === this.oldValue) return
		//调用具体的更新方法
		this.cb(newValue)
	}
}
